cssprovider: return immediately if there's remaining data behind a parsed value
authorCarlos Garnacho <carlosg@gnome.org>
Mon, 7 Mar 2011 21:42:33 +0000 (22:42 +0100)
committerCarlos Garnacho <carlosg@gnome.org>
Mon, 7 Mar 2011 22:06:54 +0000 (23:06 +0100)
parse_value() could fill in a GError, but yet (incorrectly) return G_TOKEN_NONE,
having the GError leaked as a result.

https://bugzilla.gnome.org/show_bug.cgi?id=642604 , Reported by Felix Riemann.

gtk/gtkcssprovider.c

index a0be44ab9ff5ea780b48f54d0af7ba675ddfbff4..be6fbd783ad7eb962663192a8e713f5be6cca33c 100644 (file)
@@ -3087,12 +3087,16 @@ css_provider_parse_value (GtkCssProvider  *css_provider,
       parsed = FALSE;
     }
 
+  if (end)
+    SKIP_SPACES (end);
+
   if (end && *end)
     {
       /* Set error position in the scanner
        * according to what we've parsed so far
        */
       priv->value_pos += (end - value_str);
+      parsed = FALSE;
 
       if (error && !*error)
         g_set_error_literal (error,